package org.larkdoc.service;

import java.util.List;

import org.larkdoc.model.entity.UserInfo;

/**
 * 用户业务接口
 * 
 * @author  zhangpeijun[zhangpeijun1024@qq.com]
 * @version  [v1.0.1, 2017年10月17日]
 * @see  [相关类/方法]
 * @since  [产品/模块版本]
 */
public interface UserService {
    /**
     * 根据ID删除记录
     * @param id
     * @return
     * 
     * @returns int
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午3:45:32
     */
    int deleteByPrimaryKey(Integer id);
    
    /**
     * 新增记录
     * @param record
     * @return
     * 
     * @returns int
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午3:55:35
     */
    int insert(UserInfo record);
    
    /**
     * 新增记录:只记录对象非空属性
     * @param record
     * @return
     * 
     * @returns int
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午3:55:18
     */
    int insertSelective(UserInfo record);
    
    /**
     * 根据ID查询记录
     * @param id
     * @return
     * 
     * @returns UserInfo
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午3:57:07
     */
    UserInfo selectByPrimaryKey(Integer id);
    
    /**
     * 根据ID更新记录，只更新参数中的非空属性
     * @param record
     * @return
     * 
     * @returns int
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午4:01:26
     */
    int updateByPrimaryKeySelective(UserInfo record);
    
    /**
     * 根据ID更新记录
     * @param record
     * @return
     * 
     * @returns int
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午4:01:33
     */
    int updateByPrimaryKey(UserInfo record);
    
    /**
     * 根据用户帐号信息查询用户信息
     * @param account
     * @return
     * 
     * @returns UserInfo
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午4:08:37
     */
    UserInfo getByAccount(String account);
    
    /**
     * 根据用户名或者用户帐号查询记录
     * @param record
     * @return
     * 
     * @returns List<UserInfo>
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午4:08:54
     */
    List<UserInfo> queryByNameOrAccount(String record);
    
    /**
     * 根据项目id获取关联用户信息
     * @param projectId
     * @return
     * 
     * @returns List<UserInfo>
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午4:09:13
     */
    List<UserInfo> queryByProjectId(Integer projectId);
    
    /**
     * 根据项目id集合获取关联用户信息
     * @param projectId
     * @return
     * 
     * @returns List<UserInfo>
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午4:10:59
     */
    List<UserInfo> queryByProjectId(List<Integer> projectId);
}